const jwt = require('jsonwebtoken');
const User = require('../models/User');

// 验证用户是否已登录
const protect = async (req, res, next) => {
  let token;
  
  // 检查请求头中是否有令牌
  if (
    req.headers.authorization &&
    req.headers.authorization.startsWith('Bearer')
  ) {
    try {
      // 获取令牌
      token = req.headers.authorization.split(' ')[1];
      
      // 验证令牌
      const decoded = jwt.verify(token, process.env.JWT_SECRET);
      
      // 获取用户信息，不包括密码
      req.user = await User.findById(decoded.id).select('-password');
      
      next();
    } catch (error) {
      console.error(error);
      res.status(401).json({ message: '未授权，令牌无效' });
    }
  }
  
  if (!token) {
    res.status(401).json({ message: '未授权，无令牌' });
  }
};

// 验证是否为管理员
const admin = (req, res, next) => {
  if (req.user && req.user.isAdmin) {
    next();
  } else {
    res.status(401).json({ message: '未授权，需要管理员权限' });
  }
};

module.exports = { protect, admin }; 